<?xml version = '1.0' encoding = 'UTF-8'?>
<HBRRepo><variables/><rulesets/><rules><rule id="1" name="ValidateRevFcstVarBeforeSave" product="Planning"><property name="application">Vision</property><property name="plantype">Plan1</property><property name="disabled">false</property><property name="display_label">Allocate Plan Targets</property><script type="groovy">DataGrid grid = operation.grid
GridIterator itr = grid.dataCellIterator('Revised Forecast vs Prediction %','YearTotal');
itr.each{
	 def fcstVal = it.crossDimCell('Forecast','Working')?.data;
     def revisedFcst = fcstVal;
     def adjfcstVal = it.crossDimCell('Adj Forecast','Working')?.data;
     if(adjfcstVal){
     	 revisedFcst = fcstVal + adjfcstVal;
     }
     def predictVal = it.crossDimCell('Predictive Forecast')?.data;
     if(predictVal &amp;&amp; revisedFcst){
       def variancePercent = (revisedFcst - predictVal)/revisedFcst;
       String comments = it.crossDimCell('Variance Comments','Working', 'BegBalance').getFormattedValue();
       if((variancePercent > 0.20 || variancePercent &lt; -0.20 )&amp;&amp; (comments == null || comments.trim().length() == 0)){
          it.addValidationError(0xFFFF00, "Variance is outside of the allowed range.  You must provide a comment in order to save your forecast.")
       }
     }
}</script></rule></rules><components/><deployobjects><deployobject product="2" application="vision" plantype="plan1" obj_id="1" obj_type="1" name="VALIDATEREVFCSTVARBEFORESAVE"/></deployobjects></HBRRepo>